var express = require('express');
var router = express.Router();
var connection = require('../db/sql.js');
var user = require('../db/userSql.js');
var QcloudSms = require("qcloudsms_js");
let jwt = require('jsonwebtoken');
//引入支付宝配置文件
const alipaySdk = require('../db/alipay.js');
const AlipayFormData = require('alipay-sdk/lib/form').default;
//引入axios
const axios = require('axios');
//token过期时间
function getTimeToken( exp ){
    //new Date().getTime()获取到的时间戳是毫秒，要除1000
    let getTime = parseInt(  new Date().getTime() / 1000 );
    
    if(  getTime - exp  >  60 ){
        return true;
    }
    
} 


/* GET home page. */
router.get('/', function(req, res, next) {
  res.render('index', { title: 'Express' });
});

//分类的接口
router.get('/api/goods/list',function(req,res,next){
	res.send({
		code:0,
		data:[
			{
				//一级
				id:0,
				name:'推荐',
				data:[
					{
						//二级
						id:0,
						name:'推荐',
						list:[
							{
								//三级
								id:0,
								name:'铁观音',
								imgUrl:'./imgs/list1.jpeg'
							},
							{
								//三级
								id:1,
								name:'功夫茶具',
								imgUrl:'./imgs/list1.jpeg'
							},
							{
								//三级
								id:2,
								name:'龙井',
								imgUrl:'./imgs/list1.jpeg'
							},
							{
								//三级
								id:3,
								name:'武夷岩茶',
								imgUrl:'./imgs/list1.jpeg'
							},
							{
								//三级
								id:4,
								name:'乌龙茶',
								imgUrl:'./imgs/list1.jpeg'
							},
							{
								//三级
								id:5,
								name:'玄米茶',
								imgUrl:'./imgs/list1.jpeg'
							}
						]
					}
				]
			},
			{
				//一级
				id:1,
				name:'绿茶',
				data:[
					{
						//二级
						id:0,
						name:'绿茶',
						list:[
							{
								//三级
								id:0,
								name:'龙井',
								imgUrl:'./imgs/list1.jpeg'
							},
							{
								//三级
								id:1,
								name:'黄山毛峰',
								imgUrl:'./imgs/list1.jpeg'
							},
							{
								//三级
								id:2,
								name:'碧螺春',
								imgUrl:'./imgs/list1.jpeg'
							},
							{
								//三级
								id:3,
								name:'雀舌',
								imgUrl:'./imgs/list1.jpeg'
							},
							{
								//三级
								id:4,
								name:'太平猴魁',
								imgUrl:'./imgs/list1.jpeg'
							},
							{
								//三级
								id:5,
								name:'安吉白茶',
								imgUrl:'./imgs/list1.jpeg'
							}
						]
					}
				]
			},
			{
				//一级
				id:2,
				name:'乌龙',
				data:[
					{
						//二级
						id:0,
						name:'乌龙',
						list:[
							{
								//三级
								id:0,
								name:'铁观音',
								imgUrl:'./imgs/list1.jpeg'
							},
							{
								//三级
								id:1,
								name:'功夫茶具',
								imgUrl:'./imgs/list1.jpeg'
							},
							{
								//三级
								id:2,
								name:'龙井',
								imgUrl:'./imgs/list1.jpeg'
							},
							{
								//三级
								id:3,
								name:'武夷岩茶',
								imgUrl:'./imgs/list1.jpeg'
							},
							{
								//三级
								id:4,
								name:'乌龙茶',
								imgUrl:'./imgs/list1.jpeg'
							},
							{
								//三级
								id:5,
								name:'玄米茶',
								imgUrl:'./imgs/list1.jpeg'
							}
						]
					}
				]
			},
			{
				//一级
				id:4,
				name:'红茶',
				data:[
					{
						//二级
						id:0,
						name:'红茶',
						list:[
							{
								//三级
								id:0,
								name:'铁观音',
								imgUrl:'./imgs/list1.jpeg'
							},
							{
								//三级
								id:1,
								name:'功夫茶具',
								imgUrl:'./imgs/list1.jpeg'
							},
							{
								//三级
								id:2,
								name:'龙井',
								imgUrl:'./imgs/list1.jpeg'
							},
							{
								//三级
								id:3,
								name:'武夷岩茶',
								imgUrl:'./imgs/list1.jpeg'
							},
							{
								//三级
								id:4,
								name:'乌龙茶',
								imgUrl:'./imgs/list1.jpeg'
							},
							{
								//三级
								id:5,
								name:'玄米茶',
								imgUrl:'./imgs/list1.jpeg'
							}
						]
					}
				]
			},
			{
				//一级
				id:5,
				name:'普洱茶',
				data:[
					{
						//二级
						id:0,
						name:'普洱茶',
						list:[
							{
								//三级
								id:0,
								name:'铁观音',
								imgUrl:'./imgs/list1.jpeg'
							},
							{
								//三级
								id:1,
								name:'功夫茶具',
								imgUrl:'./imgs/list1.jpeg'
							},
							{
								//三级
								id:2,
								name:'龙井',
								imgUrl:'./imgs/list1.jpeg'
							},
							{
								//三级
								id:3,
								name:'武夷岩茶',
								imgUrl:'./imgs/list1.jpeg'
							},
							{
								//三级
								id:4,
								name:'乌龙茶',
								imgUrl:'./imgs/list1.jpeg'
							},
							{
								//三级
								id:5,
								name:'玄米茶',
								imgUrl:'./imgs/list1.jpeg'
							}
						]
					}
				]
			}
		]
	})
})

//查询商品数据接口
router.get('/api/goods/shopList',function(req,res,next){
	//前端给后端的数据
	let [searchName,orderName] = Object.keys(req.query);
	let [name,order] = Object.values(req.query);
	
	console.log(searchName,orderName,name,order);
	connection.query('select * from goods_list where name like "%'+name+'%" order by '+orderName+'  '+order+' ', function(error,results){
		res.send({
			code:0,
			data:results
		})
	})
})

//首页推荐的数据
router.get('/api/index_list/0/data/1', function(req, res, next) {
  res.send({
	 code:0, //请求成功
	 data:{
		 topBar:[
			 {id:0,label:'推荐'},
			 {id:1,label:'大红袍'},
			 {id:2,label:'铁观音'},
			 {id:3,label:'绿茶'},
			 {id:4,label:'普洱'},
			 {id:5,label:'茶具'},
			 {id:6,label:'花茶'}
		 ],
		 data:[
			 //这是swiper
			 {
				 id:0,
				 type:'swiperList',
				 data:[
					 {id:0,imgUrl:'./imgs/swiper1.jpeg'},
					 {id:1,imgUrl:'./imgs/swiper2.jpeg'},
					 {id:2,imgUrl:'./imgs/swiper3.jpeg'}
				 ]
			 },
			 //这是icons
			 {
			 	id:1,
			 	type:'iconsList',
			 	data:[
			 		{id:1,title:'自饮茶',imgUrl:'./imgs/icons1.png'},
			 		{id:2,title:'茶具',imgUrl:'./imgs/icons2.png'},
			 		{id:3,title:'茶礼盒',imgUrl:'./imgs/icons3.png'},
			 		{id:4,title:'领福利',imgUrl:'./imgs/icons4.png'},
			 		{id:5,title:'官方验证',imgUrl:'./imgs/icons5.png'}
			 	]
			 },
			 //这是recommed
			 {
				 id:2,
				 type:'recommendList',
				 data:[
				 	{id:1,name:'龙井1号铁罐250g',content:'鲜爽甘醇 口粮首选',price:'68',imgUrl:'./imgs/recommend.jpeg'},
				 	{id:2,name:'龙井1号铁罐250g',content:'鲜爽甘醇 口粮首选',price:'68',imgUrl:'./imgs/recommend.jpeg'}
				 ]
			 },
			 //这是猜你喜欢
			 {
				 id:3,
				 type:'likeList',
				 data:[
				 	{id:1,imgUrl:'/imgs/goods1.png',name:'赛事茶',price:'99'},
				 	{id:2,imgUrl:'/imgs/goods2.jpeg',name:'大红袍',price:'199'},
				 	{id:3,imgUrl:'/imgs/goods3.jpeg',name:'铁观音',price:'199'},
				 	{id:4,imgUrl:'/imgs/goods4.jpeg',name:'乌龙茶',price:'99'},
				 	{id:5,imgUrl:'/imgs/goods5.jpeg',name:'日照绿茶',price:'99'},
				 	{id:6,imgUrl:'/imgs/goods6.jpeg',name:'玄米茶',price:'89'},
				 	{id:7,imgUrl:'/imgs/goods7.jpeg',name:'肉桂茶',price:'99'}
				 ]
			 }
			 
		 ]
	 }
  })
});
//首页大红袍的数据
router.get('/api/index_list/1/data/1', function(req, res, next) {
  res.send({
	  conde:0,
	 data:[
		 {
			id:1,
			type:'adList',
			data:[
				{id:1,imgUrl:'./imgs/dhp.jpeg'},
				{id:1,imgUrl:'./imgs/dhp.jpeg'}
			]
		 },
		 {
			id:2,
			type:'likeList',
			data:[
				{id:1,imgUrl:'/imgs/goods1.png',name:'赛事茶',price:'99'},
				{id:2,imgUrl:'/imgs/goods2.jpeg',name:'大红袍',price:'199'},
				{id:3,imgUrl:'/imgs/goods3.jpeg',name:'铁观音',price:'199'},
				{id:4,imgUrl:'/imgs/goods4.jpeg',name:'乌龙茶',price:'99'},
				{id:5,imgUrl:'/imgs/goods5.jpeg',name:'日照绿茶',price:'99'},
				{id:6,imgUrl:'/imgs/goods6.jpeg',name:'玄米茶',price:'89'},
				{id:7,imgUrl:'/imgs/goods7.jpeg',name:'肉桂茶',price:'99'}
			]
		}
	 ]
  })
});
//首页铁观音的数据
router.get('/api/index_list/2/data/1', function(req, res, next) {
  res.send({
	  conde:0,
	 data:[
		 {
			id:1,
			type:'adList',
			data:[
				{id:1,imgUrl:'./imgs/tgy.jpeg'},
				{id:1,imgUrl:'./imgs/tgy.jpeg'}
			]
		 },
		 //这是icons
		 {
		 	id:2,
		 	type:'iconsList',
		 	data:[
		 		{id:1,title:'自饮茶',imgUrl:'./imgs/icons1.png'},
		 		{id:2,title:'茶具',imgUrl:'./imgs/icons2.png'},
		 		{id:3,title:'茶礼盒',imgUrl:'./imgs/icons3.png'},
		 		{id:4,title:'领福利',imgUrl:'./imgs/icons4.png'},
		 		{id:5,title:'官方验证',imgUrl:'./imgs/icons5.png'}
		 	]
		 },
		 {
			id:3,
			type:'likeList',
			data:[
				{id:1,imgUrl:'./imgs/like.jpeg',name:'建盏茶具套装 红色芝麻毫 12件套',price:'299'},
				{id:2,imgUrl:'./imgs/like.jpeg',name:'建盏茶具套装 红色芝麻毫 12件套',price:'299'},
				{id:3,imgUrl:'./imgs/like.jpeg',name:'建盏茶具套装 红色芝麻毫 12件套',price:'299'}
			]
		 }
	 ]
  })
});
//查询商品id的接口
router.get('/api/goods/id',function(req,res,next){
	let id = req.query.id;
	connection.query('select * from goods_list where id='+id+'',function(error,results){
		if( error ) throw error;
		res.json({
			code:0,
			data:results[0]
		})
	})
})
//登录的接口
router.post('/api/login',function(req,res,next){
	//后端要接收前端传递过来的值
	let params = {
		userTel : req.body.userTel,
		userPwd : req.body.userPwd
	};
	
	let userTel = params.userTel;
	let userPwd = params.userPwd || '666666'
	//引入token包
	let jwt = require('jsonwebtoken');
	//用户信息
	let payload = {tel:userTel};
	//口令
	let secret = 'kun';
	//生成token
	let token = jwt.sign(payload,secret,{
		expiresIn:60
	});
	
	//查询用户手机号是否存在
	connection.query( user.queryUserTel(params) ,function(error,results){
		//手机号存在 
		if( results.length > 0 ){
			//记录的id
			let id = results[0].id;
			connection.query( user.queryUserPwd( params ) ,function(error,result){
				if(  result.length > 0 ){
					
					connection.query(`update user set token = '${token}' where id = ${id}`,function(){
						//手机号和密码都对
						res.send({
							code:200,
							data:{
								success:true,
								msg:'登录成功',
								data:result[0]
							}
						})
					})
					
				}else{
					//密码不对
					res.send({
						code:302,
						data:{
							success:false,
							msg:'密码不正确'
						}
					})
				}
			})
		}else{
			//不存在
			res.send({
				code:301,
				data:{
					success:false,
					msg:'手机号不存在'
				}
			})
		}
	})
})
//发送短信验证码
router.post('/api/code',function(req,res,next){
	
	let tel = req.body.phone;
	// 短信应用SDK AppID
	var appid = 1400187558;  // SDK AppID是1400开头
	
	// 短信应用SDK AppKey
	var appkey = "dc9dc3391896235ddc2325685047edc7";
	
	// 需要发送短信的手机号码
	var phoneNumbers = [tel];
	
	// 短信模板ID，需要在短信应用中申请
	var templateId = 285590;  // NOTE: 这里的模板ID`7839`只是一个示例，真实的模板ID需要在短信控制台中申请
	
	// 签名
	var smsSign = "三人行慕课";  // NOTE: 这里的签名只是示例，请使用真实的已申请的签名, 签名参数使用的是`签名内容`，而不是`签名ID`
	
	// 实例化QcloudSms
	var qcloudsms = QcloudSms(appid, appkey);
	
	// 设置请求回调处理, 这里只是演示，用户需要自定义相应处理回调
	function callback(err, ress, resData) {
	    if (err) {
	        console.log("err: ", err);
	    } else {
	        res.send({
				code:200,
				data:{
					success:true,
					data:ress.req.body.params[0]
				}
			})
	    }
	}
	var ssender = qcloudsms.SmsSingleSender();
	//这个变量：params就是往手机上发送的短信
	var params = [Math.floor(Math.random()*(9999-1000))+1000];
	ssender.sendWithParam(86, phoneNumbers[0], templateId,
	  params, smsSign, "", "", callback);  // 签名参数不能为空串
})
//增加一个用户
router.post('/api/addUser',function(req,res,next){
	let params = {
		userTel : req.body.phone
	}
	//查询用户是否存在
	connection.query( user.queryUserTel( params ),function(error,results){
		if(error) throw error;
		//用户存在
		if(results.length > 0){
			res.send({
				code:200,
				data:{
					success:true,
					msg:'登录成功',
					data:results[0]
				}
			})
		}else{
			//不存在，新增一条
			connection.query( user.insertData(params),function(err,result){
				connection.query( user.queryUserTel( params ),function(e,r){
					res.send({
						code:200,
						data:{
							success:true,
							msg:'登录成功',
							data:r[0]
						}
					})
				})
			})
		}
	})
})
//注册
router.post('/api/register',function(req,res,next){
	let params = {
		userTel : req.body.phone,
		userPwd : req.body.pwd
	}
	//查询用户是否存在
	connection.query( user.queryUserTel( params ),function(error,results){
		if(error) throw error;
		//用户存在
		if(results.length > 0){
			res.send({
				code:200,
				data:{
					success:true,
					msg:'登录成功',
					data:results[0]
				}
			})
		}else{
			//不存在，新增一条
			connection.query( user.insertData(params),function(err,result){
				connection.query( user.queryUserTel( params ),function(e,r){
					res.send({
						code:200,
						data:{
							success:true,
							msg:'登录成功',
							data:r[0]
						}
					})
				})
			})
		}
	})
})
//查询用户是否存在
router.post('/api/selectUser',function(req,res,next){
	let params = {
		userTel : req.body.phone
	}
	connection.query( user.queryUserTel( params ),function(error,results){
		if( results.length > 0 ){
			res.send({
				code:200,
				data:{
					success:true
				}
			})
		}else{
			res.send({
				code:0,
				data:{
					success:false,
					msg:'此用户不存在'
				}
			})
		}
	})
})
//修改密码
router.post('/api/recovery',function(req,res,next){
	//接收前端传过来的值
	let params = {
		userTel : req.body.phone,
		userPwd : req.body.pwd
	}
	connection.query( user.queryUserTel( params ),function(error,results){
		//数据库的某一条记录数的数据id
		let id = results[0].id;
		let pwd = results[0].pwd
		//pwd字段名，${pwd}是原来的值，${userPwd}是现在的值
		connection.query(`updata user set pwd = replace(pwd,'${pwd}','${params.userPwd}') where id = ${id}`,function(err,result){
			res.send({
				code:200,
				data:{
					success:true,
					msg:'修改成功'
				}
			})
		})
	})
})
//添加购物车数据
router.post('/api/addCart',function(req,res,next){
	//后端接收前端的参数
	let goodsId = req.body.goodsId;
	//token
	let token = req.headers.token;
	let tokenObj = jwt.decode(token);
	
	//如果执行，就证明token过期了
	// if(  getTimeToken(tokenObj.exp) ){
	//     res.send({
	//         data:{
	//             code:1000
	//         }
	//     })
	// }
	
	//查询用户
	connection.query(`select * from user where tel = ${tokenObj.tel}`,function(error,results){
		//用户id
		let uId = results[0].id;
		 //查询商品
		 connection.query(`select * from goods_list where id=${goodsId}`,function(err,result){
		 	let goodsName = result[0].name;
		 	let goodsPrice = result[0].price;
		 	let goodsImgUrl = result[0].imgUrl;
			//查询当前用户在之前是否添加过本商品
			connection.query(`select * from goods_cart where uId =  ${uId} and goods_id = ${goodsId}`,function(e,r){
				//用户之前是添加过商品到购物车的
				if(r.length >0 ){
					let num = r[0].goods_num;
					connection.query(`update goods_cart set goods_num = replace(goods_num,${num},${parseInt(num) + 1}) where id = ${r[0].id} `,function(e,datas){
						res.send({
							data:{
								code:200,
								success:true,
								msg:'添加成功'
							}
						})
						})
					}else{
					//没有添加过
					connection.query(`insert into goods_cart (uId,goods_id,goods_name,goods_price,goods_num,goods_imgUrl) values ('${uId}','${goodsId}','${goodsName}','${goodsPrice}',"1",'${goodsImgUrl}')`,function(e,r){
						res.send({
							data:{
								code:200,
								success:true,
								msg:'添加成功'
							}
						})
					})
				}
			})
		
		 })
	})
})
//查询购物车数据
router.post('/api/selectCart',function(req,res,next){
	//token
	let token = req.headers.token;
	let tokenObj = jwt.decode(token);
	//查询用户
	connection.query(`select * from user where tel = ${tokenObj.tel}`,function(error,results){
		//用户id
		let uId = results[0].id;
		//查询购物车
		connection.query(`select * from goods_cart where uId = ${uId}`,function(err,result){
			res.send({
				data:{
					code:200,
					success:true,
					data:result
				}
			})
		})
	})
})
//删除购物车数据
router.post('/api/deleteCart',function(req,res,next){
	let arrId = req.body.arrId;
	for(let i=0;i<arrId.length;i++){
		connection.query(`delete from goods_cart where id = ${arrId[i]}`,function(error,results){
			res.send({
				data:{
					code:200,
					success:true,
					msg:'删除成功'
				}
			})
		})
	}
})
//修改购物车数量
router.post('/api/updateNum',function(req,res,next){
	let id = req.body.id;
	let changeNum = req.body.num;
	connection.query(`select * from goods_cart where id = ${id}`,function(error,results){
		//原来的数量
		let num = results[0].goods_num;
		connection.query(`update goods_cart set goods_num = replace(goods_num,'${num}','${changeNum}') where id = ${id}`,function(err,result){
			res.send({
				data:{
					code:200,
					success:true,
				}
			})
		})
	})
})
//新增收货地址
router.post('/api/addAddress',function(req,res,next){
	console.log(req.body);
	//token
	let token = req.headers.token;
	let tokenObj = jwt.decode(token);
	//拿到前端给后端传入的数据
	let body = req.body;
	let [name,phone,path,detailpath,delivery] = [
		body.name,
		body.phone,
		body.path,
		body.detailpath,
		body.delivery
	];
	//查询当前用户
	connection.query(`select * from user where tel = ${tokenObj.tel}`,function(error,results){
		//用户id（当前用户）
		let uId = results[0].id;
		//增加一条收货地址
		 if(  delivery != 1 ){
		    connection.query(`insert into address (uId,name,phone,path,detailpath,delivery) values (${uId},"${name}","${phone}","${path}","${detailpath}","${delivery}")`,function(err,result){
		        res.send({
		            data:{
		            	code:200,
		            	success:true,
		            	msg:'收货地址添加成功'
		            }
		        })
		    })
		}else{
		     connection.query(`select * from address where uId = ${uId} and delivery = ${delivery}`,function(err,result){
		        if(result.length > 0){
					let addressId = result[0].id;
					 connection.query(`update address set delivery = replace(delivery,'1','0') where id = ${addressId}`,function(){
					    connection.query(`insert into address (uId,name,phone,path,detailpath,delivery) values (${uId},"${name}","${phone}","${path}","${detailpath}","${delivery}")`,function(err,result){
					         res.send({
					            data:{
					            	code:200,
					            	success:true,
					            	msg:'收货地址添加成功'
					            }
					        })
					    })
					})
				}else{
					connection.query(`insert into address (uId,name,phone,path,detailpath,delivery) values (${uId},"${name}","${phone}","${path}","${detailpath}","${delivery}")`,function(err,result){
					    res.send({
					        data:{
					        	code:200,
					        	success:true,
					        	msg:'收货地址添加成功'
					        }
					    })
					})
				}
		    })
		 }
		
	})
	console.log(req.body);
})
//查询收货地址
router.post('/api/selectAddress',function(req,res,next){
	//token
	let token = req.headers.token;
	let tokenObj = jwt.decode(token);
	//查询当前用户
	connection.query(`select * from user where tel = ${tokenObj.tel}`,function(error,results){
		//用户id
		let uId = results[0].id;
		connection.query(`select * from address where uId = ${uId}`,function(err,result){
		    res.send({
		         data:{
		             code:200,
		             success:true,
		             msg:'查询成功',
		             data:result
		        }
		    })
		})
	})
})
//修改收货地址
router.post('/api/updateAddress',function(req,res,next){
	//token
	let token = req.headers.token;
	let tokenObj = jwt.decode(token);
	//拿到前端给后端传入的数据
	let body = req.body;
	let [id,name,phone,path,detailpath,delivery] = [
		body.id,
		body.name,
		body.phone,
		body.path,
		body.detailpath,
		body.delivery
	];
	//查询当前用户
	connection.query(`select * from user where tel = ${tokenObj.tel}`,function(error,results){
		
		//用户id
		let uId = results[0].id;
		console.log(uId);
		//对应查询到0或者1 之前有没有默认收货地址
		connection.query(`select * from address where uId = ${uId} and delivery = ${delivery}`,function(err,result){
			//判断之前是否有默认地址
			if( result.length > 0 ){
				let addressId = result[0].id;
				connection.query(`update address set delivery = replace(delivery,'1','0') where id = ${addressId}`,function(){
					let updateSql = `update address set uId = ? , name = ? ,phone = ? ,path = ? ,detailpath = ? ,delivery = ?  where id = ${id}`;
					connection.query(updateSql,[uId,name,phone,path,detailpath,delivery],function(errors,datas){
						res.send({
							data:{
							     code:200,
							     success:true,
							     msg:'修改成功'
							}
						})
					})
				})
			}else{
				let updateSql = `update address set uId = ? , name = ? ,phone = ? ,path = ? ,detailpath = ? ,delivery = ?  where id = ${id}`;
				connection.query(updateSql,[uId,name,phone,path,detailpath,delivery],function(errors,datas){
					res.send({
						data:{
						     code:200,
						     success:true,
						     msg:'修改成功'
						}
					})
				})
			}
		})
	})
})
//删除收货地址
router.post('/api/daleteAddress',function(req,res,next){
	let id = req.body.id;
	connection.query(`delete from address where id = ${id}`,function(error,results){
		res.send({
			data:{
			     code:200,
			     success:true,
			     msg:'删除成功'
			}
		})
	})
})
//生成一个订单
router.post('/api/addOrder',function(req,res,next){
    //token
    let token = req.headers.token;
    let tokenObj = jwt.decode(token);
    //前端给后端的数据
    let goodsArr = req.body.arr;
    //生成订单号order_id，规则：时间戳 + 6为随机数
    function setTimeDateFmt( s ){
        return s < 10 ? '0' + s : s
    }
    function randomNumber(){
        const now = new Date();
        let month = now.getMonth() + 1;
        let day = now.getDate();
        let hour = now.getHours();
        let minutes = now.getMinutes();
        let seconds = now.getSeconds();
        month = setTimeDateFmt(month);
        day = setTimeDateFmt(day);
        hour = setTimeDateFmt(hour);
        minutes = setTimeDateFmt(minutes);
        seconds = setTimeDateFmt(seconds);
        let orderCode = now.getFullYear().toString() + month.toString() + day + hour + minutes + seconds + (Math.round(Math.random() * 1000000 )).toString();
        return orderCode;
    }
    /*
    未支付：1
    待支付：2
    支付成功：3
    支付失败：4 | 0
    */
    //商品列表名称
    let goodsName = [];
    //订单商品总金额
    let goodsPrice = 0;
    //订单商品总数量
    let goodsNum = 0;
	//订单号
	let orderId = randomNumber();
    
    goodsArr.forEach(v=>{
        goodsName.push( v.goods_name );
        goodsPrice += v.goods_price * v.goods_num;
        goodsNum += parseInt(v.goods_num);
    })
    //查询当前用户
    //connection.query(`select * from user where tel = ${tokenObj.tel}`,function(error,results){
        //用户id
        let uId = goodsArr[0].uid;
		console.log(uId);
        connection.query(`insert into store_orders (order_id,goods_name,goods_price,goods_num,order_status,uId) values ('${ orderId }','${goodsName}','${goodsPrice}','${goodsNum}','1',${uId})`,function(){
             connection.query(`select * from store_orders where uId =${uId} and order_id='${orderId}'`,function(err,result){
				 res.send({
					 data:{
					      code:200,
						  success:true,
						  data:result
					 }
				 })
			 })
        })
    //})
})
//查询到一个订单
router.post('/api/selectOrder',function(req,res,next){
	//接收前端给后端的订单号
	let order_id = req.body.order_id;
	connection.query(`select * from store_orders where order_id='${order_id}'`,function(err,result){
		res.send({
			data:{
			    code:200,
			    success:true,
			    data:result
			}
		})
	})
})
//修改订单状态
router.post('/api/submitOrder',function(req,res,next){
	//token
	let token = req.headers.token;
	let tokenObj = jwt.decode(token);
	//订单号
	let order_id = req.body.order_id;
	//拿到购物车选中的商品的id
	let shopArr = req.body.shopArr;
	//查询用户
	//查询当前用户
	connection.query(`select * from user where tel = ${tokenObj.tel}`,function(error,results){
		//用户id（当前用户）
		let uId = results[0].id;
		connection.query(`select * from store_orders where uId = ${uId} and order_id = ${order_id}`,function(err,result){
			//订单的数据库id
			let id = result[0].id;
			//修改订单状态 ：1 ==》2
			connection.query(`update store_orders set order_status = replace(order_status,'1','2') where id = ${id}`,function(e,r){
				//把购物车的数据删除
				shopArr.forEach(v=>{
					connection.query(`delete from goods_cart where id = ${v}`,function(){
						
					})
				})
				res.send({
					data:{
						code:200,
						success:true
					}
				})
			})
		})
	})
})
//发起支付
router.post('/api/payment',function(req,res,next){
	//订单号
	let orderId = req.body.order_id;
	//商品总价
	let price = req.body.price;
	//购买商品的名称
	let name = req.body.name;
	//对接支付宝API
	const formData = new AlipayFormData();
	// 调用 setMethod 并传入 get，会返回可以跳转到支付页面的 url
	formData.setMethod('get');
	//支付时的信息
	formData.addField('bizContent', {
	  outTradeNo: orderId, //订单号
	  productCode: 'FAST_INSTANT_TRADE_PAY', //写死的
	  totalAmount: price, //价格
	  subject: name, //商品名称
	});
	//支付成功或者失败跳转的链接
	formData.addField('returnUrl', 'http://localhost:8080/payment');
	//返回promise
	const result = alipaySdk.exec(
	    'alipay.trade.page.pay',
	    {},
	    { formData: formData },
	);
	//对接支付宝成功，支付宝方返回的数据
	result.then(resp=>{
	    res.send({
	        data:{
	            code:200,
	            success:true,
	            msg:'支付中',
	            paymentUrl : resp
	        }
	    })
	})
})

//支付状态successPayment
router.post('/api/successPayment',function(req,res,next){
	//token
	let token = req.headers.token;
	let tokenObj = jwt.decode(token);
	//订单号
	let out_trade_no = req.body.out_trade_no;
	let trade_no = req.body.trade_no;
	//支付宝配置
	//对接支付宝API
	const formData = new AlipayFormData();
	// 调用 setMethod 并传入 get，会返回可以跳转到支付页面的 url
	formData.setMethod('get');
	//支付时的信息
	formData.addField('bizContent', {
	  out_trade_no,
	  trade_no
	});
	//返回promise
	const result = alipaySdk.exec(
	    'alipay.trade.query',
	    {},
	    { formData: formData },
	);
	//后端请求支付宝
	result.then(resData=>{
		axios({
		    method:'GET',
		    url:resData
		}).then(data=>{
			let responseCode = data.data.alipay_trade_query_response;
			if( responseCode.code == '10000' ){
				//证明支付是可以的了
				switch( responseCode.trade_status ){
					case 'WAIT_BUYER_PAY':
					    res.send({
					        data:{
					            code:0,
					            data:{
					                msg:'支付宝有交易记录，没付款'
					            }
					        }
					    })
					break;
					                    
					case 'TRADE_CLOSED':
					    res.send({
					        data:{
					            code:1,
					            data:{
					                msg:'交易关闭'
					            }
					        }
					    })
					break;
					
					case 'TRADE_FINISHED':
					    connection.query(`select * from user where tel = ${tokenObj.tel}`,function(error,results){
					        //用户id
					        let uId = results[0].id;
					        connection.query(`select * from store_orders where uId = ${uId} and order_id = ${out_trade_no}`,function(err,result){
					            let id = result[0].id;
					            //订单的状态修改掉2==》3
					            connection.query(`update store_orders set order_status = replace(order_status,'2','3') where id = ${id}`,function(){
					                res.send({
					                    data:{
					                        code:2,
					                        data:{
					                            msg:'交易完成'
					                        }
					                    }
					                })
					            })
					        })
					    })
					break;
					                    
					case 'TRADE_SUCCESS':
					    connection.query(`select * from user where tel = ${tokenObj.tel}`,function(error,results){
							console.log(111);
					        //用户id
					        let uId = results[0].id;
					        connection.query(`select * from store_orders where uId = ${uId} and order_id = ${out_trade_no}`,function(err,result){
					            let id = result[0].id;
					            //订单的状态修改掉2==》3
					            connection.query(`update store_orders set order_status = replace(order_status,'2','3') where id = ${id}`,function(){
					                res.send({
					                    data:{
					                        code:2,
					                        data:{
					                            msg:'交易完成'
					                        }
					                    }
					                })
					            })
					        })
					    })
					break;
				}
			}else if( responseCode.code == '40004' ){
				res.send({
					data:{
						code:4,
						msg:'交易不存在'
					}
				})
			}
		}).catch( err=>{
			res.send({
				data:{
					code:500,
					msg:'交易失败',
					err
				}
			})
		})
	})
})

module.exports = router;
